package com.ruoyi.system.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.GwContract;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;

/**
 * 合同管理Service接口
 *
 * @author ruoyi
 * @date 2025-04-23
 */
public interface IGwContractService {
    /**
     * 查询合同管理
     *
     * @param id 合同管理主键
     * @return 合同管理
     */
    public GwContract selectGwContractById(String id);

    /**
     * 查询合同管理列表
     *
     * @param gwContract 合同管理
     * @return 合同管理集合
     */
    public List<GwContract> selectGwContractList(GwContract gwContract);

    public List<GwContract> getGwContractByTypeAndUserId(String type, String userId, String status);

    /**
     * 新增合同管理
     *
     * @param gwContract 合同管理
     * @return 结果
     */
    public int insertGwContract(GwContract gwContract);

    /**
     * 修改合同管理
     *
     * @param gwContract 合同管理
     * @return 结果
     */
    public int updateGwContract(GwContract gwContract);
    /**
     * 修改合同管理
     *
     * @param gwContract 合同管理
     * @return 结果
     */
    public int updateGwContractCallback(GwContract gwContract);

    /**
     * 批量删除合同管理
     *
     * @param ids 需要删除的合同管理主键集合
     * @return 结果
     */
    public int deleteGwContractByIds(String[] ids);

    /**
     * 删除合同管理信息
     *
     * @param id 合同管理主键
     * @return 结果
     */
    public int deleteGwContractById(String id);

    /**
     * 发起签署
     *
     * @param gwContract 合同管理
     * @return 结果
     */
    public GwContract addSign(GwContract gwContract) throws Exception;

    /**
     * 撤销伙同
     *
     * @param gwContract 合同管理
     * @return 结果
     */
    public AjaxResult revoke(GwContract gwContract);

    public Map<String, String> getDownUrl(GwContract gwContract) throws TencentCloudSDKException;

    public AjaxResult getSignUrl(GwContract gwContract);

    public AjaxResult getTemplateParam(GwContract gwContract) throws Exception;

    public GwContract selectGwContractByContractId(String contractId);

    public List<GwContract> selectGwContractAllList(GwContract gwContract);

    public AjaxResult getPdfPics(GwContract gwContract) throws IOException;

}
